package com.company.ljh.medium;

/**
 * @description:
 * 1004. 最大连续1的个数 III
 * 提示
 * 中等
 * 575
 * 相关企业
 * 给定一个二进制数组 nums 和一个整数 k，如果可以翻转最多 k 个 0 ，则返回 数组中连续 1 的最大个数 。
 * @projectName:leet_code
 * @see:com.company.ljh.medium
 * @author:ljh
 * @createTime:2023/7/3 10:45
 * @version:1.0
 */
public class 最大连续1的个数3 {
    //滑动窗口法，保证剩余的k要大于0，如果k等于0，则前指针丢弃一个0
    public int longestOnes(int[] nums, int k) {
        int start = 0;
        int end = 0;
        int temp = k;
        int max = 0;
        while(end < nums.length){
            if(nums[end] == 0){
                //保证k大于0
                while(temp <= 0){
                    if(nums[start] ==0){
                        temp++;
                    }
                    start++;
                }
                temp--;
            }
            if(temp >= 0)
                max = max > end - start + 1?max:end - start + 1;
            end++;
        }
        return max;
    }
}
